package br.com.vendor_engine.repositorio;

import br.com.vendor_engine.entidades.Cliente;
import br.com.vendor_engine.entidades.Propostavenda;
import br.com.vendor_engine.interfaces.InterfacePropostaVenda;
import br.com.vendor_engine.xmlutil.NewHibernateUtil;
import java.util.Date;
import java.util.List;
import org.hibernate.classic.Session;

public class RepositorioPropostaVenda implements InterfacePropostaVenda{
    
    private Session s = NewHibernateUtil.getSessionFactory().getCurrentSession();
    Propostavenda pv = new Propostavenda();
    
    @Override
    public void salvarPropostaVenda(Cliente cliente, Float valorVendaPropostaVenda, 
            String formaPagamentoPropostaVenda, String tempoGarantiaPropostaVenda, 
            Date dataPropostaVenda, Date validadePropostaVenda){
    
        pv.setIdPropostaVenda(0);
        pv.setCliente(cliente);
        pv.setValorVendaPropostaVenda(valorVendaPropostaVenda);
        pv.setFormaPagamentoPropostaVenda(formaPagamentoPropostaVenda);
        pv.setTempoGarantiaPropostaVenda(tempoGarantiaPropostaVenda);
        pv.setDataPropostaVenda(dataPropostaVenda);
        pv.setValidadePropostaVenda(validadePropostaVenda);
        
        s.beginTransaction();
        s.save(pv);
        if (s.getTransaction().isActive()) {
            s.beginTransaction().commit();
            if (s.isOpen()) {
                s.flush();
            }
        }
        if (s.isOpen()) {
            s.close();
            System.out.println("Fechada");
        }
    }
    
    @Override
    public Propostavenda getPropostaVenda(){
        return pv;
    }

    @Override
    public List<Propostavenda> pegarTodosPropostaVendda() {
        s.beginTransaction();
        List<Propostavenda> list = (List<Propostavenda>) s.createQuery("from Propostavenda").list();
        return list;        
    }

    @Override
    public void alterarPropostaVenda(int idPropostaVenda, Cliente cliente, Float valorVendaPropostaVenda, 
    String formaPagamentoPropostaVenda, String tempoGarantiaPropostaVenda, Date dataPropostaVenda, 
    Date validadePropostaVenda) {
        
        pv.setIdPropostaVenda(idPropostaVenda);
        pv.setCliente(cliente);
        pv.setValorVendaPropostaVenda(valorVendaPropostaVenda);
        pv.setFormaPagamentoPropostaVenda(formaPagamentoPropostaVenda);
        pv.setTempoGarantiaPropostaVenda(tempoGarantiaPropostaVenda);
        pv.setDataPropostaVenda(dataPropostaVenda);
        pv.setValidadePropostaVenda(validadePropostaVenda);
        
        s.beginTransaction();
        s.save(pv);
        if (s.getTransaction().isActive()) {
            s.beginTransaction().commit();
            if (s.isOpen()) {
                s.flush();
            }
        }
        if (s.isOpen()) {
            s.close();
            System.out.println("Fechada");
        }
        
    }
    
}
